// 知识点1：新标准的特性：可以移动而非拷贝对象，可直接调用std::move()，移动而非拷贝会大幅度的提高性能：不必要进行旧内存到新内存的拷贝，当对象很大时省下很多的内存，另一个原因是像IO类和unique_ptr这样的类不可以进行拷贝，但是我们可以使用移动来共享其中的资源

// 知识点2：右值引用：必须绑定到右值的引用通过两个取址符号&&来获得右值引用：只绑定到一个将要销毁的对象，因此，我们可以自由的将右值引用的资源“移动”到另一个对象中

// 知识点3：左值和右值的区别：P121页

// 知识点4：一个右值引用本质上也只是一个对象的另外一个名字而已。对于常规的引用：称之为左值引用，我们不能将其绑定到所要转换的表达式，而右值引用可以绑定，见下例：

// int a = 42;
// int &p1 = a;//正确，是a的引用
// int &&p2 = a;//错误，不能将一个右值绑定到一个左值上
// int &p3 = a *42;//错误，a*42为右值，&iii为左值引用
// const int &p4 = a*42;//正确，可以将一个右值绑定到一个const的引用上
// int &&p5 = a*42;//正确，右值绑定
// 知识点5：由上例可知，左值持久，右值短暂，左值具有持久的状态，右值要么是字面值常量，要么是在表达式求值的过程中创建的临时对象(没有其他用户进行绑定且要被销毁)：使用右值引用的代码可以自由的接管所引用的对象的资源

// 知识点6：变量是左值

// int &&p6 = 42;//正确，字面值是右值
// int &&p7 =
// p6;//错误，不能将一个右值引用直接绑定到一个变量上，即使这个变量是右值引用类型

// 答案见知识
